<?php

require_once 'model/lancamentos.php';

abstract class ActLancamentos extends mLancamentos {
	
	protected $sqlInsert = "insert into lancamentos (data_lan, hora_lan, valor_lan, descricao, efetivado, cod_categoria, cod_conta) 
							values ('%s','%s','%s','%s','%s','%s','%s')";
	
	protected $sqlDelete = "delete from lancamentos where cod_lancamento = '%s'";
	
	protected $sqlUpdate = "update lancamentos set data_lan='%s', hora_lan='%s', valor_lan='%s', descricao='%s', efetivado='%s',
							 cod_categoria='%s', cod_conta='%s' where cod_lancamento='%s'";
	
	protected $sqlSelect = "select DATE_FORMAT(lancamentos.data_lan, '%s') as data_lan, 
								   cod_lancamento, hora_lan, valor_lan, descricao, efetivado,
								   cod_categoria, cod_conta from lancamentos %s %s";
	
	protected $sqlSelectInner = "select DATE_FORMAT(lancamentos.data_lan, '%s') as data_lan,
										lancamentos.cod_lancamento, lancamentos.hora_lan, lancamentos.valor_lan, 
										lancamentos.descricao, lancamentos.efetivado,lancamentos.cod_categoria,
										lancamentos.cod_conta, categorias.*, contas.* from lancamentos 
										inner join categorias on (lancamentos.cod_categoria = categorias.cod_categoria)
										inner join contas on (lancamentos.cod_conta = contas.cod_conta) %s %s";

	
	public function load(){
		$rs = $this->select(sprintf("where cod_lancamento = %s",$this->getCodLancamento()));
	   $this->setDataLan($rs[0]['data_lan']);
	   $this->setHoraLan($rs[0]['hora_lan']);
	   $this->setValorLan($rs[0]['valor_lan']);
	   $this->setDescricao($rs[0]['descricao']);
	   $this->setEfetivado($rs[0]['efetivado']);
	   $this->setCodCategoria($rs[0]['cod_categoria']);
	   $this->setCodConta($rs[0]['cod_conta']);
	   return $this;
	}

	
	
	public function insert(){
		$sql = sprintf($this->sqlInsert,
					   $this->getDataLanRaw(),
					   $this->getHoraLan(),
					   $this->getValorLan(),
					   $this->getDescricao(),
					   $this->getEfetivado(),
					   $this->getCodCategoria(),
					   $this->getCodConta()
					  );
		return $this->RunQuery($sql);
	}
	
	public function delete (){
		$sql = sprintf($this->sqlDelete,
					   $this->getCodCategoria()
					  );
		return $this->RunQuery($sql);
	}
	
	public function update(){
		$sql = sprintf($this->sqlUpdate,
					   $this->getDataLanRaw(),
					   $this->getHoraLan(),
					   $this->getValorLan(),
					   $this->getDescricao(),
					   $this->getEfetivado(),
					   $this->getCodCategoria(),
					   $this->getCodConta(),
					   $this->getCodLancamento()
					  );
		return $this->RunQuery($sql);
	}
	
	public function select($where = '', $oder=''){
		$sql = sprintf($this->sqlSelect,
						'%d/%m/%Y',
						$where,
						$oder
					   );
		return $this->RunSelect($sql);			   
	}
	
	public function selectTree($where = '', $oder=''){
		$sql = sprintf($this->sqlSelectInner,
						'%d/%m/%Y',
						$where,
						$oder
					   );
		return $this->RunSelect($sql);			   
	}
		
}
?>